JavaScriptã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ç®¡çãäºææ§ç®¡çããããŠäžçäžã§å ç¢ãã€ä¿å®æ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ãã¹ããã©ã¯ãã£ã¹ã«é¢ããå æ¬çãªã¬ã€ãã
JavaScriptã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ç®¡çïŒã°ããŒãã«ãªãšã³ã·ã¹ãã ã«ãããäºææ§ã®ç¢ºä¿
JavaScriptãWebéçºã®äžçãåžå·»ãç¶ããäžã§ãäŸåé¢ä¿ã®ç®¡çãšã¢ãžã¥ãŒã«éã®äºææ§ã確ä¿ããããšã®éèŠæ§ããŸããŸãé«ãŸã£ãŠããŸãããã®ã¬ã€ãã§ã¯ãJavaScriptã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ç®¡çãäŸåé¢ä¿ã管çããããã®ãã¹ããã©ã¯ãã£ã¹ããããŠã°ããŒãã«ãªç°å¢ã§å ç¢ãã€ä¿å®æ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®æŠç¥ã«ã€ããŠå æ¬çã«è§£èª¬ããŸãã
ãªãã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ç®¡çãéèŠãªã®ãïŒ
JavaScriptãããžã§ã¯ãã¯ãåºå€§ãªå€éšã©ã€ãã©ãªãã¢ãžã¥ãŒã«ã®ãšã³ã·ã¹ãã ã«äŸåããŠããããšããããããŸãããããã®ã¢ãžã¥ãŒã«ã¯åžžã«é²åããŠãããæ°æ©èœããã°ä¿®æ£ãããã©ãŒãã³ã¹æ¹åã宿çã«ãªãªãŒã¹ãããŠããŸããé©åãªããŒãžã§ã³ç®¡çæŠç¥ããªããã°ãåäžã®ã¢ãžã¥ãŒã«ãæŽæ°ããã ãã§ãæå³ããã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåãå£ããŠããŸããèç«ããããããã°äœæ¥ãæœåšçãªããŠã³ã¿ã€ã ã«ã€ãªããå¯èœæ§ããããŸãã
å€åœç±ã®Eã³ããŒã¹ãã©ãããã©ãŒã ãã·ã§ããã³ã°ã«ãŒãã©ã€ãã©ãªãæŽæ°ããã·ããªãªãæ³åããŠã¿ãŠãã ãããæ°ããããŒãžã§ã³ãé©åãªããŒãžã§ãã³ã°ãªãã«äºææ§ã®ãªã倿ŽïŒbreaking changesïŒãå°å ¥ããå Žåãç°ãªãå°åã®é¡§å®¢ãååãã«ãŒãã«è¿œå ããããååŒãå®äºãããããããã¯ãŠã§ããµã€ãã«ã¢ã¯ã»ã¹ããããšããã§ããªããªãåé¡ã«ééãããããããŸãããããã¯ãé倧ãªééçæå€±ãšäŒç€Ÿã®è©å€ãžã®ãã¡ãŒãžã«ã€ãªããå¯èœæ§ããããŸãã
广çãªã¢ãžã¥ãŒã«ããŒãžã§ãã³ã°ã¯ã以äžã®ç¹ã«ãããŠæ¥µããŠéèŠã§ãïŒ
- å®å®æ§ïŒäŸåé¢ä¿ãæŽæ°ããéã®äºæãã¬ç Žæãé²ããŸãã
- åçŸæ§ïŒã¢ããªã±ãŒã·ã§ã³ãç°ãªãç°å¢ãæéãéããŠäžè²«ããŠåäœããããšãä¿èšŒããŸãã
- ä¿å®æ§ïŒã³ãŒãããŒã¹ã®æŽæ°ãšä¿å®ã®ããã»ã¹ãç°¡çŽ åããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ïŒåããããžã§ã¯ãã®ç°ãªãéšåã§äœæ¥ããéçºè éã®ã·ãŒã ã¬ã¹ãªååãä¿é²ããŸãã
ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ïŒSemVerïŒïŒæ¥çæšæº
ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ïŒSemVerïŒã¯ããœãããŠã§ã¢ã®ãªãªãŒã¹ã«ããã倿Žã®æ§è³ªãæç¢ºãã€äžè²«ããæ¹æ³ã§äŒããããã«åºãæ¡çšãããŠããããŒãžã§ã³ç®¡çã¹ããŒã ã§ããSemVerã¯ãã¡ãžã£ãŒ.ãã€ããŒ.ãããïŒMAJOR.MINOR.PATCHïŒãšãã圢åŒã®3éšæ§æã®ããŒãžã§ã³çªå·ã䜿çšããŸãã
- ã¡ãžã£ãŒïŒMAJORïŒïŒäºææ§ã®ãªãAPIã®å€æŽã瀺ããŸããäºææ§ã®ãªãAPI倿Žãè¡ã£ãå Žåãã¡ãžã£ãŒããŒãžã§ã³ãã€ã³ã¯ãªã¡ã³ãããŸãã
- ãã€ããŒïŒMINORïŒïŒåŸæ¹äºææ§ã®ããæ¹æ³ã§æ©èœã远å ãããããšã瀺ããŸããåŸæ¹äºææ§ãä¿ã¡ãªããæ©èœã远å ããå Žåããã€ããŒããŒãžã§ã³ãã€ã³ã¯ãªã¡ã³ãããŸãã
- ãããïŒPATCHïŒïŒåŸæ¹äºææ§ã®ãããã°ä¿®æ£ã瀺ããŸããåŸæ¹äºææ§ãä¿ã¡ãªãããã°ä¿®æ£ãè¡ã£ãå ŽåããããããŒãžã§ã³ãã€ã³ã¯ãªã¡ã³ãããŸãã
äŸãã°ã1.2.3ãšããŒãžã§ã³ç®¡çãããã¢ãžã¥ãŒã«ã¯ã以äžã瀺ããŸãïŒ
- ã¡ãžã£ãŒããŒãžã§ã³ïŒ1
- ãã€ããŒããŒãžã§ã³ïŒ2
- ãããããŒãžã§ã³ïŒ3
SemVerã®ç¯å²æå®ãçè§£ãã
package.jsonãã¡ã€ã«ã§äŸåé¢ä¿ãæå®ããéãSemVerã®ç¯å²æå®ã䜿çšããŠã蚱容å¯èœãªã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ãå®çŸ©ã§ããŸããããã«ãããå®å®æ§ã®å¿
èŠæ§ãšãæ°æ©èœããã°ä¿®æ£ã®æ©æµãåããããšããèŠæãšã®ãã©ã³ã¹ããšãããšãã§ããŸãã
以äžã¯ãäžè¬çãªSemVerã®ç¯å²æå®æŒç®åã§ãïŒ
^(ãã£ã¬ãã): 巊端ã®ãŒãã§ãªãæ°åã倿ŽããªãæŽæ°ãèš±å¯ããŸããäŸãã°ã^1.2.3ã¯1.x.xãžã®æŽæ°ãèš±å¯ããŸããã2.0.0ã¯èš±å¯ããŸããã~(ãã«ã): ãã€ããŒããŒãžã§ã³ãæå®ãããŠããå Žåãæãå³ã®æ°åã®æŽæ°ãèš±å¯ããŸããäŸãã°ã~1.2.3ã¯1.2.xãžã®æŽæ°ãèš±å¯ããŸããã1.3.0ã¯èš±å¯ããŸããã~1ã®ããã«ã¡ãžã£ãŒããŒãžã§ã³ã®ã¿ãæå®ããå Žåã2.0.0ãŸã§ã®å€æŽãèš±å¯ããããã¯>=1.0.0 <2.0.0ãšç䟡ã§ãã>,>=,<,<=,=: æ¯èŒæŒç®åã䜿çšããŠããŒãžã§ã³ç¯å²ãæå®ã§ããŸããäŸãã°ã>=1.2.0 <2.0.0ã¯1.2.0ïŒãããå«ãïŒãã2.0.0ïŒãããå«ãŸãªãïŒãŸã§ã®ããŒãžã§ã³ãèš±å¯ããŸãã*(ã¢ã¹ã¿ãªã¹ã¯): ä»»æã®ããŒãžã§ã³ãèš±å¯ããŸããããã¯äºæž¬äžèœãªåäœã«ã€ãªããå¯èœæ§ããããããäžè¬çã«ã¯æšå¥šãããŸããã- ããŒãžã§ã³ã³ã³ããŒãã³ãå
ã®
x,X,*: éšåçãªããŒãžã§ã³èå¥åãæå®ããéã«ãxãXããŸãã¯*ããä»»æãã®æå³ã§äœ¿çšã§ããŸããäŸãã°ã1.x.xã¯>=1.0.0 <2.0.0ãšç䟡ã§ããã1.2.xã¯>=1.2.0 <1.3.0ãšç䟡ã§ãã
äŸïŒ
package.jsonãã¡ã€ã«å
ïŒ
{
"dependencies": {
"lodash": "^4.17.21",
"react": "~17.0.0"
}
}
ãã®èšå®ã¯ããããžã§ã¯ããlodashã®4ã§å§ãŸãä»»æã®ããŒãžã§ã³ïŒäŸïŒ4.18.0, 4.20.0ïŒãšãreactã®ããŒãžã§ã³17.0ã®ä»»æã®ãããããŒãžã§ã³ïŒäŸïŒ17.0.1, 17.0.2ïŒãšäºææ§ãããããšãæå®ããŸãã
ããã±ãŒãžãããŒãžã£ãŒïŒnpmãšYarn
npmïŒNode Package ManagerïŒãšYarnã¯ãJavaScriptã§æã人æ°ã®ããããã±ãŒãžãããŒãžã£ãŒã§ãããããã¯ããããžã§ã¯ãã®äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ã管çãæŽæ°ã®ããã»ã¹ãç°¡çŽ åããŸãã
npm
npmã¯Node.jsã®ããã©ã«ãã®ããã±ãŒãžãããŒãžã£ãŒã§ããnpmã¬ãžã¹ããªïŒãªãŒãã³ãœãŒã¹ã®JavaScriptããã±ãŒãžã®åºå€§ãªãªããžããªïŒãšå¯Ÿè©±ããããã®ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ïŒCLIïŒãæäŸããŸãã
npmã®äž»èŠãªã³ãã³ãïŒ
npm install:package.jsonãã¡ã€ã«ã§å®çŸ©ãããäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸããnpm install <package-name>: ç¹å®ã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸããnpm update: ããã±ãŒãžãpackage.jsonãã¡ã€ã«ã§æå®ãããSemVerç¯å²ãæºããææ°ããŒãžã§ã³ã«æŽæ°ããŸããnpm outdated: å€ãããã±ãŒãžããã§ãã¯ããŸããnpm uninstall <package-name>: ããã±ãŒãžãã¢ã³ã€ã³ã¹ããŒã«ããŸãã
Yarn
Yarnã¯ãããé«éãªã€ã³ã¹ããŒã«æéãæ±ºå®è«çãªäŸåé¢ä¿ã®è§£æ±ºãæ¹åãããã»ãã¥ãªãã£ãªã©ãnpmã«å¯Ÿããããã€ãã®å©ç¹ãæäŸãããããäžã€ã®äººæ°ã®ããããã±ãŒãžãããŒãžã£ãŒã§ãã
Yarnã®äž»èŠãªã³ãã³ãïŒ
yarn install:package.jsonãã¡ã€ã«ã§å®çŸ©ãããäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸããyarn add <package-name>: ãããžã§ã¯ãã«æ°ããäŸåé¢ä¿ã远å ããŸããyarn upgrade: ããã±ãŒãžãpackage.jsonãã¡ã€ã«ã§æå®ãããSemVerç¯å²ãæºããææ°ããŒãžã§ã³ã«æŽæ°ããŸããyarn outdated: å€ãããã±ãŒãžããã§ãã¯ããŸããyarn remove <package-name>: ãããžã§ã¯ãããããã±ãŒãžãåé€ããŸãã
ããã¯ãã¡ã€ã«ïŒåçŸæ§ã®ç¢ºä¿
npmãšYarnã¯ã©ã¡ããããã¯ãã¡ã€ã«ïŒnpmã®å Žåã¯package-lock.jsonãYarnã®å Žåã¯yarn.lockïŒã䜿çšããŠããããžã§ã¯ãã®äŸåé¢ä¿ã決å®è«çã«ã€ã³ã¹ããŒã«ãããããšãä¿èšŒããŸããããã¯ãã¡ã€ã«ã¯ããã¹ãŠã®äŸåé¢ä¿ãšãã®æšç§»çãªäŸåé¢ä¿ã®æ£ç¢ºãªããŒãžã§ã³ãèšé²ããäºæãã¬ããŒãžã§ã³ã®ç«¶åãé²ããã¢ããªã±ãŒã·ã§ã³ãç°ãªãç°å¢éã§äžè²«ããŠåäœããããšãä¿èšŒããŸãã
ãã¹ããã©ã¯ãã£ã¹ïŒãã¹ãŠã®éçºè ãšãããã€ã¡ã³ãç°å¢ãåãäŸåé¢ä¿ã®ããŒãžã§ã³ã䜿çšããããã«ãåžžã«ããã¯ãã¡ã€ã«ãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒäŸïŒGitïŒã«ã³ãããããŠãã ããã
äŸåé¢ä¿ç®¡çæŠç¥
广çãªäŸåé¢ä¿ç®¡çã¯ãå®å®çã§ä¿å®æ§ã®é«ãã³ãŒãããŒã¹ãç¶æããããã«äžå¯æ¬ ã§ãã以äžã«èæ ®ãã¹ãäž»èŠãªæŠç¥ãããã€ã瀺ããŸãïŒ
1. äŸåé¢ä¿ãæ éã«åºå®ãã
SemVerç¯å²ã䜿çšãããšæè»æ§ãåŸãããŸãããææ°ã®ç¶æ
ãä¿ã€ããšãšäºæãã¬ç Žæãé¿ããããšã®ãã©ã³ã¹ããšãããšãéèŠã§ããå®å®æ§ãæåªå
ãããå Žåã¯ãããå¶éã®å³ããç¯å²ïŒäŸïŒ^ã®ä»£ããã«~ïŒã䜿çšããããäŸåé¢ä¿ãç¹å®ã®ããŒãžã§ã³ã«åºå®ïŒãã³çãïŒãããããããšãæ€èšããŠãã ããã
äŸïŒæ¬çªç°å¢ã®éèŠãªäŸåé¢ä¿ã«ã€ããŠã¯ãæå€§éã®å®å®æ§ã確ä¿ããããã«ç¹å®ã®ããŒãžã§ã³ã«åºå®ããããšãæ€èšãããããããŸããïŒ
{
"dependencies": {
"react": "17.0.2"
}
}
2. äŸåé¢ä¿ã宿çã«æŽæ°ãã
äŸåé¢ä¿ã®ææ°ããŒãžã§ã³ãç¶æããããšã¯ããã°ä¿®æ£ãããã©ãŒãã³ã¹æ¹åãã»ãã¥ãªãã£ãããã®æ©æµãåããããã«éèŠã§ãããã ããæŽæ°ã®ãã³ã«ã¢ããªã±ãŒã·ã§ã³ã培åºçã«ãã¹ããããªã°ã¬ãã·ã§ã³ïŒæ©èœäœäžïŒãçºçããŠããªãããšã確èªããããšãäžå¯æ¬ ã§ãã
ãã¹ããã©ã¯ãã£ã¹ïŒå®æçãªäŸåé¢ä¿ã®æŽæ°ãµã€ã¯ã«ãèšç»ããèªåãã¹ããã¯ãŒã¯ãããŒã«çµã¿èŸŒãã§ãæœåšçãªåé¡ãæ©æã«çºèŠã§ããããã«ããŠãã ããã
3. äŸåé¢ä¿ã®è匱æ§ã¹ãã£ããŒã䜿çšãã
ãããžã§ã¯ãã®äŸåé¢ä¿ã«æ¢ç¥ã®ã»ãã¥ãªãã£è匱æ§ããªããã¹ãã£ã³ããããã®ããŒã«ã倿°å©çšå¯èœã§ãã宿çã«äŸåé¢ä¿ãã¹ãã£ã³ããããšã§ãæœåšçãªã»ãã¥ãªãã£ãªã¹ã¯ãæªçšãããåã«ç¹å®ãã察åŠããããšãã§ããŸãã
äŸåé¢ä¿è匱æ§ã¹ãã£ããŒã®äŸïŒ
npm audit: ãããžã§ã¯ãã®äŸåé¢ä¿ã®è匱æ§ãã¹ãã£ã³ããnpmã®çµã¿èŸŒã¿ã³ãã³ããyarn audit: Yarnã®åæ§ã®ã³ãã³ãã- Snyk: å æ¬çãªè匱æ§ã¹ãã£ã³ãšä¿®æ£ã¢ããã€ã¹ãæäŸãã人æ°ã®ãµãŒãããŒãã£ããŒã«ã
- OWASP Dependency-Check: ãããžã§ã¯ãã®äŸåé¢ä¿ãç¹å®ããæ¢ç¥ã®å ¬ã«é瀺ãããè匱æ§ããããã©ããããã§ãã¯ãããªãŒãã³ãœãŒã¹ããŒã«ã
4. ãã©ã€ããŒãããã±ãŒãžã¬ãžã¹ããªã®äœ¿çšãæ€èšãã
ç¬èªã®å éšã¢ãžã¥ãŒã«ãéçºã»ä¿å®ããçµç¹ã«ãšã£ãŠããã©ã€ããŒãããã±ãŒãžã¬ãžã¹ããªã¯äŸåé¢ä¿ç®¡çãšã»ãã¥ãªãã£ã«å¯Ÿãããã倧ããªå¶åŸ¡ãæäŸã§ããŸãããã©ã€ããŒãã¬ãžã¹ããªã䜿çšãããšãå éšããã±ãŒãžããã¹ãããã³ç®¡çããæ¿èªããããŠãŒã¶ãŒã®ã¿ãã¢ã¯ã»ã¹ã§ããããã«ä¿èšŒã§ããŸãã
ãã©ã€ããŒãããã±ãŒãžã¬ãžã¹ããªã®äŸïŒ
- npm Enterprise: npm, Inc.ããã®åçšè£œåã§ããã©ã€ããŒãã¬ãžã¹ããªããã®ä»ã®ãšã³ã¿ãŒãã©ã€ãºæ©èœãæäŸããŸãã
- Verdaccio: 軜éã§èšå®äžèŠãªãã©ã€ããŒãnpmã¬ãžã¹ããªã
- JFrog Artifactory: npmããã®ä»ã®ããã±ãŒãžåœ¢åŒããµããŒããããŠãããŒãµã«ãªã¢ãŒãã£ãã¡ã¯ããªããžããªãããŒãžã£ãŒã
- GitHub Package Registry: GitHubäžã§çŽæ¥ããã±ãŒãžããã¹ãã§ããŸãã
5. æšç§»çäŸåé¢ä¿ãçè§£ãã
æšç§»çäŸåé¢ä¿ãšã¯ããããžã§ã¯ãã®çŽæ¥ã®äŸåé¢ä¿ãäŸåããŠããããã±ãŒãžã®ããšã§ãããããã¯package.jsonãã¡ã€ã«ã§æç€ºçã«å®çŸ©ãããŠããªãããšãå€ããããæšç§»çäŸåé¢ä¿ã®ç®¡çã¯é£ããå ŽåããããŸãã
npm lsãyarn whyã®ãããªããŒã«ã¯ããããžã§ã¯ãã®äŸåé¢ä¿ããªãŒãçè§£ããæšç§»çäŸåé¢ä¿ã«ãããæœåšçãªç«¶åãè匱æ§ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
ç Žå£ç倿Žãžã®å¯Ÿå¿
æåãå°œãããŠããäŸåé¢ä¿ã«ãããç Žå£ç倿Žã¯é¿ããããªãããšããããŸããäŸåé¢ä¿ãç Žå£ç倿Žãå°å ¥ããå Žåãããã€ãã®éžæè¢ããããŸãïŒ
1. 倿Žã«å¯Ÿå¿ããããã«ã³ãŒããæŽæ°ãã
æãçŽæ¥çãªã¢ãããŒãã¯ãäŸåé¢ä¿ã®æ°ããããŒãžã§ã³ãšäºææ§ãæã€ããã«ã³ãŒããæŽæ°ããããšã§ããããã«ã¯ãã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ãAPIåŒã³åºãã®æŽæ°ããŸãã¯æ°æ©èœã®å®è£ ãå«ãŸããå ŽåããããŸãã
2. äŸåé¢ä¿ãå€ãããŒãžã§ã³ã«åºå®ãã
çæéã§ã³ãŒããæŽæ°ããããšãçŸå®çã§ãªãå Žåã¯ãæ¢åã®ã³ãŒããšäºææ§ã®ããå€ãããŒãžã§ã³ã®äŸåé¢ä¿ã«åºå®ããããšãã§ããŸããããããããã¯äžæçãªè§£æ±ºçã§ãããæçµçã«ã¯ãã°ä¿®æ£ãæ°æ©èœã®æ©æµãåããããã«æŽæ°ããå¿ èŠããããŸãã
3. äºææ§ã¬ã€ã€ãŒã䜿çšãã
äºææ§ã¬ã€ã€ãŒãšã¯ãæ¢åã®ã³ãŒããšäŸåé¢ä¿ã®æ°ããããŒãžã§ã³ãšã®éã®ã®ã£ãããåããã³ãŒãã®ããšã§ããããã¯ããè€éãªè§£æ±ºçã«ãªãå¯èœæ§ããããŸãããæ¢åã®æ©èœãå£ãããšãªããæ°ããããŒãžã§ã³ã«æ®µéçã«ç§»è¡ããããšãã§ããŸãã
4. ä»£æ¿æ¡ãæ€èšãã
ããäŸåé¢ä¿ãé »ç¹ã«ç Žå£ç倿Žãå°å ¥ããããã¡ã³ããã³ã¹ãäžååã ã£ããããå Žåã¯ãåæ§ã®æ©èœãæäŸãã代æ¿ã®ã©ã€ãã©ãªãã¢ãžã¥ãŒã«ã«åãæ¿ããããšãæ€èšãããšããã§ãããã
ã¢ãžã¥ãŒã«äœæè ã®ããã®ãã¹ããã©ã¯ãã£ã¹
ããããªããç¬èªã®JavaScriptã¢ãžã¥ãŒã«ãéçºã»å ¬éããŠãããªããä»ã®äººãããªãã®ã¢ãžã¥ãŒã«ã䜿ãããããä¿å®ããããããããã«ãããŒãžã§ãã³ã°ãšäºææ§ã«é¢ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšãéèŠã§ãã
1. ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ã䜿çšãã
ã¢ãžã¥ãŒã«ã®æ°ããããŒãžã§ã³ããªãªãŒã¹ããéã¯ãã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ã®ååãéµå®ããŠãã ãããé©åãªããŒãžã§ã³çªå·ãã€ã³ã¯ãªã¡ã³ãããããšã§ãåãªãªãŒã¹ã®å€æŽå 容ãæç¢ºã«äŒããŸãã
2. æç¢ºãªããã¥ã¡ã³ããæäŸãã
ã¢ãžã¥ãŒã«ã«é¢ããå æ¬çã§ææ°ã®ããã¥ã¡ã³ããæäŸããŠãã ãããæ°ãããªãªãŒã¹ã®ç Žå£ç倿Žã«ã€ããŠã¯æç¢ºã«èšè¿°ããæ°ããããŒãžã§ã³ãžã®ç§»è¡æ¹æ³ã«é¢ããã¬ã€ãã³ã¹ãæäŸããŸãã
3. ãŠããããã¹ããæžã
ã¢ãžã¥ãŒã«ãæåŸ éãã«æ©èœããããšã確èªããæ°ãããªãªãŒã¹ã§ãªã°ã¬ãã·ã§ã³ãå°å ¥ãããã®ãé²ãããã«ãå æ¬çãªãŠããããã¹ããæžããŠãã ããã
4. ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã䜿çšãã
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒã·ã¹ãã ã䜿çšããŠãã³ãŒãããªããžããªã«ã³ãããããããã³ã«ãŠããããã¹ããèªåçã«å®è¡ããŸããããã«ãããæœåšçãªåé¡ãæ©æã«çºèŠããå£ãããªãªãŒã¹ã®å ¬éãé²ãããšãã§ããŸãã
5. 倿Žå±¥æŽïŒChangelogïŒãæäŸãã
ã¢ãžã¥ãŒã«ã®åãªãªãŒã¹ã«ããããã¹ãŠã®éèŠãªå€æŽãææžåãã倿Žå±¥æŽãç¶æããŸããããã«ããããŠãŒã¶ãŒã¯åã¢ããããŒãã®åœ±é¿ãçè§£ããã¢ããã°ã¬ãŒããããã©ãããæ±ºå®ããã®ã«åœ¹ç«ã¡ãŸãã
6. å€ãAPIãéæšå¥šã«ãã
ç Žå£ç倿Žãå°å ¥ããéã¯ãå€ãAPIãå³åº§ã«åé€ããã®ã§ã¯ãªããéæšå¥šã«ããããšãæ€èšããŠãã ãããããã«ããããŠãŒã¶ãŒã¯æ¢åã®ã³ãŒããå£ãããšãªããæ°ããAPIã«ç§»è¡ããããã®æéãåŸãããšãã§ããŸãã
7. ãã£ãŒãã£ãŒãã©ã°ã®äœ¿çšãæ€èšãã
ãã£ãŒãã£ãŒãã©ã°ã䜿çšãããšãæ°æ©èœãäžéšã®ãŠãŒã¶ãŒã«æ®µéçã«å±éããããšãã§ããŸããããã«ãããæ©èœãå šå¡ã«ãªãªãŒã¹ããåã«ãæœåšçãªåé¡ãç¹å®ãã察åŠããããšãã§ããŸãã
çµè«
JavaScriptã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ç®¡çãšäºææ§ç®¡çã¯ãå ç¢ã§ä¿å®æ§ãé«ããã°ããŒãã«ã«ã¢ã¯ã»ã¹å¯èœãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ããã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ã®ååãçè§£ããããã±ãŒãžãããŒãžã£ãŒã广çã«äœ¿çšããå¥å šãªäŸåé¢ä¿ç®¡çæŠç¥ãæ¡çšããããšã§ãäºæãã¬ç Žæã®ãªã¹ã¯ãæå°éã«æããã¢ããªã±ãŒã·ã§ã³ãç°ãªãç°å¢ãæéãéããŠç¢ºå®ã«æ©èœããããã«ããããšãã§ããŸããã¢ãžã¥ãŒã«äœæè ãšããŠãã¹ããã©ã¯ãã£ã¹ã«åŸãããšã¯ãJavaScriptãšã³ã·ã¹ãã ãžã®ããªãã®è²¢ç®ã䟡å€ãããã®ã§ãããäžçäžã®éçºè ã«ãšã£ãŠçµ±åãããããã®ã«ãªãããšãä¿èšŒããŸãã